home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
gfx
/
misc
/
gnuplot-3.7src.lha
/
gnuplot-3.7src
/
gnuplot-3.7.lha
/
gnuplot-3.7
/
term
/
qms.trm
< prev
next >
Wrap
Text File
|
1998-11-26
|
6KB
|
236 lines
/*
* $Id: qms.trm,v 1.14 1998/04/14 00:18:05 drd Exp $
*
*/
/* GNUPLOT - qms.trm */
/*[
* Copyright 1990 - 1993, 1998
*
* Permission to use, copy, and distribute this software and its
* documentation for any purpose with or without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
*
* Permission to modify the software is granted, but not the right to
* distribute the complete modified source code. Modifications are to
* be distributed as patches to the released version. Permission to
* distribute binaries produced by compiling modified sources is granted,
* provided you
* 1. distribute the corresponding source modifications from the
* released version in the form of a patch file along with the binaries,
* 2. add special version identification to distinguish your version
* in addition to the base release version number,
* 3. provide your name and address as the primary contact for the
* support of your modified version, and
* 4. retain our contact information in regard to use of the base
* software.
* Permission to distribute the released version of the source code along
* with corresponding source modifications in the form of a patch file is
* granted with same provisions 2 through 4 for binary distributions.
*
* This software is provided "as is" without express or implied warranty
* to the extent permitted by applicable law.
]*/
/*
* This file is included by ../term.c.
*
* This terminal driver supports:
* QMS laser printers
*
* AUTHORS
* Colin Kelley, Thomas Williams, Russell Lang
*
* send your comments or suggestions to (info-gnuplot@dartmouth.edu).
*
*/
/*
* adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
*/
#include "driver.h"
#ifdef TERM_REGISTER
register_term(qms)
#endif
#ifdef TERM_PROTO
TERM_PUBLIC void QMS_init __PROTO((void));
TERM_PUBLIC void QMS_graphics __PROTO((void));
TERM_PUBLIC void QMS_text __PROTO((void));
TERM_PUBLIC void QMS_linetype __PROTO((int linetype));
TERM_PUBLIC void QMS_move __PROTO((unsigned int x, unsigned int y));
TERM_PUBLIC void QMS_vector __PROTO((unsigned int x2, unsigned int y2));
TERM_PUBLIC void QMS_put_text __PROTO((unsigned int x, unsigned int y, char str[]));
TERM_PUBLIC void QMS_reset __PROTO((void));
#define QMS_XMAX 9000
#define QMS_YMAX 6000
#define QMS_XLAST (QMS_XMAX - 1)
#define QMS_YLAST (QMS_YMAX - 1)
#define QMS_VCHAR 120
#define QMS_HCHAR 70
#define QMS_VTIC 70
#define QMS_HTIC 70
#endif /* TERM_PROTO */
#ifndef TERM_PROTO_ONLY
#ifdef TERM_BODY
static int qms_line = 0; /* to remember current line type */
TERM_PUBLIC void QMS_init()
{
/* This was just ^IOL, but at Rutgers at least we need some more stuff */
fputs("^PY^-\n^IOL\n^ISYNTAX00000^F^IB11000^IJ00000^IT00000\n", gpoutfile);
/* ^ QUIC on ^set defaults ^ set botttom,top,left margins
* ^landscape ^free format
*/
/* set defaults are: implicit decimal point, units in inches,
* numbers left justified, units in 1/1000 inch, do not ignore spaces
* margins are in 1/1000 inch units
*/
}
TERM_PUBLIC void QMS_graphics()
{
fputs("^IGV\n", gpoutfile);
/* ^enter graphics vector mode */
}
TERM_PUBLIC void QMS_text()
{
/* added ^-, because ^, after an ^I command doesn't actually print a page */
/* Did anybody try this code out? [uhh...-cdk] */
fputs("^IGE\n^-^,", gpoutfile);
/* ^exit graphics vector mode
* ^pass terminator
* ^print page
*/
}
TERM_PUBLIC void QMS_linetype(linetype)
int linetype;
{
static int width[2 + 9] = { 7, 3, 3, 3, 3, 5, 5, 5, 7, 7, 7 };
static int type[2 + 9] = { 0, 1, 0, 2, 3, 0, 2, 3, 0, 2, 3 };
/*
* I don't know about Villanova, but on our printer, using ^V without
* previously setting up a pattern crashes the microcode.
* [nope, doesn't crash here. -cdk]
* [it generates a controller error here on dotted lines. - rjl]
*/
/* Code to define patterns added by rjl
* According to the manual it should work - but it doesn't
*/
qms_line = linetype;
if (linetype >= 9)
linetype %= 9;
fprintf(gpoutfile, "^PW%02d\n", width[linetype + 2]);
/* ^width in dots */
switch (type[linetype + 2]) {
case 1: /* short dash */
fputs("^PV102025^G\n^V1\n", gpoutfile);
/* ^PV = define pattern vector, 1 = pattern number,
* 02 = number of pen downs and ups, 025 = .025" length of ups/downs
*/
break;
case 2: /* medium dash */
fputs("^PV202050^G\n^V2\n", gpoutfile);
break;
case 3: /* long dash */
fputs("^PV302100^G\n^V3\n", gpoutfile);
break;
default:
case 0:
fputs("^V0\n", gpoutfile);
break;
}
}
TERM_PUBLIC void QMS_move(x, y)
unsigned int x, y;
{
fprintf(gpoutfile, "^U%05d:%05d\n", 1000 + x, QMS_YLAST + 1000 - y);
/* ^pen up vector*/
}
TERM_PUBLIC void QMS_vector(x2, y2)
unsigned int x2, y2;
{
fprintf(gpoutfile, "^D%05d:%05d\n", 1000 + x2, QMS_YLAST + 1000 - y2);
/* ^pen down vector*/
}
TERM_PUBLIC void QMS_put_text(x, y, str)
unsigned int x, y;
char str[];
{
char ch;
QMS_move(x, y + QMS_VCHAR / 3);
fputs("^IGE\n", gpoutfile);
ch = *str++;
while (ch != NUL) {
if (ch == '^')
putc('^', gpoutfile);
putc(ch, gpoutfile);
ch = *str++;
}
fputs("\n^IGV\n", gpoutfile);
QMS_linetype(qms_line); /* restore line type */
}
TERM_PUBLIC void QMS_reset()
{
fputs("^PN^-\n", gpoutfile);
/* ^QUIC off */
}
#endif /* TERM_BODY */
#ifdef TERM_TABLE
TERM_TABLE_START(qms_driver)
"qms", "QMS/QUIC Laser printer (also Talaris 1200 and others)",
QMS_XMAX, QMS_YMAX, QMS_VCHAR, QMS_HCHAR,
QMS_VTIC, QMS_HTIC, options_null, QMS_init, QMS_reset,
QMS_text, null_scale, QMS_graphics, QMS_move, QMS_vector,
QMS_linetype, QMS_put_text, null_text_angle,
null_justify_text, line_and_point, do_arrow, set_font_null
TERM_TABLE_END(qms_driver)
#undef LAST_TERM
#define LAST_TERM qms_driver
#endif /* TERM_TABLE */
#endif /* TERM_PROTO_ONLY */
#ifdef TERM_HELP
START_HELP(qms)
"1 qms",
"?commands set terminal qms",
"?set terminal qms",
"?set term qms",
"?terminal qms",
"?term qms",
"?qms",
" The `qms` terminal driver supports the QMS/QUIC Laser printer, the Talaris",
" 1200 and others. It has no options."
END_HELP(qms)
#endif